package com.example.hello.service;

public interface InteractionService {

    /**
     * 用户点击“收藏”操作:
     * 1. 若数据库无此记录，则新增 rating=0, isFavorite=true, borrowCount=0
     * 2. 若有此记录，则更新 isFavorite=true
     *
     * @param userId 用户 id
     * @param bookId 图书 id
     */
    void markFavorite(Integer userId, Integer bookId);

    /**
     * 更新用户对图书的评分：
     * 先根据 userId 和 bookId 查询，如果不存在则插入一条记录，
     * 新记录的 rating 为传入参数，isFavorite 为 false，borrowCount 为 0；
     * 如果存在，则更新该记录的 rating 为传入参数。
     *
     * @param userId 用户ID
     * @param bookId 图书ID
     * @param rating 新评分值
     */
    void updateOrInsertRating(Integer userId, Integer bookId, double rating);

    /**
     * 用户点击“借阅”时，根据 userId 和 bookId 执行以下操作：
     * - 如果记录不存在，则插入一条新记录，设定 rating=0, isFavorite=false, borrowCount=1；
     * - 如果记录存在，则将记录中的 borrowCount 增加1。
     *
     * @param userId 用户ID
     * @param bookId 图书ID
     */
    void borrowBook(Integer userId, Integer bookId);

    void cancleFavorite(Integer userId, Integer bookId);
}